//
//  MainViewController.swift
//  SinaWeibo
//
//  Created by mac on 16/2/17.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit

class MainViewController: UITabBarController {

    //MARK:按钮监听事件
    //unrecognized selector sent to instance 0x7fc0e972afc0'
    //1.不希望外界访问该方法 可以添加private关键字 来限制访问
    //2.一旦target -- action 对应的方法添加了private 以后  运行循环就无法找到该方法
    //3.在方法前添加 @objc 告诉运行循环 这个方法是基于OC消息动态派发机制执行的
    @objc private func plusBtnDidClick(){
    
        print(__FUNCTION__)
    }
    
    
    //viewDidLoad 相当于控制器的入口
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //打印对象的类型
//        print(tabBar.classForCoder)
        
        let mainTabBar = MainTabBar()
        //由于系统的tabBar是只读属性 不能够直接设置 可以使用kvc的方式 在运行时替换身份
        setValue(mainTabBar, forKey: "tabBar")
        
//        print(tabBar.classForCoder)
        
        //添加plusBtn的点击事件
        mainTabBar.plusBtn.addTarget(self, action: "plusBtnDidClick", forControlEvents: .TouchUpInside)
        
        //添加子视图控制器
        addChildViewControllers()
    }
    
    //私有函数,只有在本类中才可以访问
    private func addChildViewControllers(){
    
        addChildViewController(HomeTableViewController(), title: "首页", imageName: "tabbar_home")
        addChildViewController(DiscoverTableViewController(), title: "发现", imageName: "tabbar_discover")
        addChildViewController(MessageTableViewController(), title: "消息", imageName: "tabbar_message_center")
        addChildViewController(ProfileTableViewController(), title: "我", imageName: "tabbar_profile")
        
    }
    
    //MARK:添加单个视图控制器
    private func addChildViewController(vc:UIViewController,title:String,imageName:String){
    
//        let home = HomeTableViewController()
        let nav = UINavigationController(rootViewController: vc)
        
        //设置title
        vc.title = title
        //        nav.tabBarItem.title = "首页"
        //        home.navigationItem.title = "首页 "
        
        //设置tabBarItem图片
        vc.tabBarItem.image = UIImage(named: imageName)
        
        vc.tabBarItem.selectedImage = UIImage(named: imageName + "_highlighted")?.imageWithRenderingMode(.AlwaysOriginal)
        vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.orangeColor()], forState: .Selected)
        //还可以直接渲染颜色
//        tabBar.tintColor = UIColor.orangeColor() 
        
        addChildViewController(nav)

    }
    
}
